# Importamos los resultados de la temporada 2020 de la F1 ----------------
# Echamos un vistazo a las estadisticas en el siguiente enlace
browseURL('https://www.formel1.de/rennergebnisse/wm-stand/2020/fahrerwertung')
# Fijamos los contenidos de la tabla HTML dentro de la variable f1
f1 <- read_html('https://www.formel1.de/rennergebnisse/wm-stand/2020/fahrerwertung') %>%
html_node('table') %>%
html_table()
# Mostramos nuestros datos
f1
## Pos. Fahrer Pkt.
## 1 1 Lewis Hamilton 347 12 25 26 25 19 25 25 7 26 15 25 26 26 25 25 -
## 2 2 Valtteri Bottas 223 25 18 15 - 15 16 18 10 18 26 - 18 18 - 4 4
## 3 3 Max Verstappen 214 - 15 18 19 25 18 15 - - 18 19 15 - 8 19 -
## 4 4 Sergio Perez 125 8 8 6 - - 10 1 1 10 12 12 6 8 18 - 25
## 5 5 Daniel Ricciardo 119 - 4 4 12 - - 13 8 12 10 15 2 15 1 6 10
## 6 6 Carlos Sainz 105 10 3 2 - - 8 - 18 - - 10 8 6 10 10 12
## 7 7 Alexander Albon 105 - 12 10 4 10 4 8 - 15 1 - - - 6 15 8
## 8 8 Charles Leclerc 98 18 - - 15 12 - - - 4 8 6 12 10 12 1 -
## 9 9 Lando Norris 97 16 10 - 10 2 1 6 12 8 - - - 4 5 12 1
## 10 10 Pierre Gasly 75 6 - - 6 - 2 4 25 - 2 8 10 - - 8 -
## 11 11 Lance Stroll 75 - 6 12 2 8 12 2 15 - - - - - 2 - 15
## 12 12 Esteban Ocon 62 4 - - 8 4 - 10 4 - 6 - 4 - - 2 18
## 13 13 Sebastian Vettel 33 1 - 8 1 - 6 - - 1 - - 1 - 15 - -
## 14 14 Daniil Kwjat 32 - 1 - - 1 - - 2 6 4 - - 12 - - 6
## 15 15 Nico Hülkenberg 10 - - - - 6 - - - - - 4 - - - - -
## 16 16 Kimi Räikkönen 4 - - - - - - - - 2 - - - 2 - - -
## 17 17 Antonio Giovinazzi 4 2 - - - - - - - - - 1 - 1 - - -
## 18 18 George Russell 3 - - - - - - - - - - - - - - - 3
## 19 19 Romain Grosjean 2 - - - - - - - - - - 2 - - - - -
## 20 20 Kevin Magnussen 1 - - 1 - - - - - - - - - - - - -
## 21 21 Nicholas Latifi - - - - - - - - - - - - - - - - -
## 22 22 Jack Aitken - - - - - - - - - - - - - - - - -
## 23 23 Pietro Fittipaldi - - - - - - - - - - - - - - - - -
##
## 1 15
## 2 18
## 3 25
## 4 -
## 5 7
## 6 8
## 7 12
## 8 -
## 9 10
## 10 4
## 11 1
## 12 2
## 13 -
## 14 -
## 15 -
## 16 -
## 17 -
## 18 -
## 19 -
## 20 -
## 21 -
## 22 -
## 23 -
# Transformamos y limpiamos la informacion de los pilotos -----------------------------------------------
# Añadimos los titulos de las columnas restantes
colnames(f1) <- c('Pos', 'Piloto', 'Total', sprintf('R%02d', 1:17))
# Convertimos a un "tibble data frame" y filtramos a los 8 mejores pilotos
f1 <- as_tibble(f1) %>%
filter(as.integer(Pos) <= 9)
# Convertimos a Piloto en una variable factorial, reemplazamos todos los '-' con ceros, convertimos a formato largo
f1$Piloto <- as.factor(f1$Piloto)
f1[, -2] <- apply(f1[, -2], 2, function(x) as.integer(gsub('-', '0', as.character(x))))
f1long <- gather(f1, Carrera, Puntos, R01:R17)
# Y así se ve mejor
f1long
## # A tibble: 153 x 5
## Pos Piloto Total Carrera Puntos
## <int> <fct> <int> <chr> <int>
## 1 1 Lewis Hamilton 347 R01 12
## 2 2 Valtteri Bottas 223 R01 25
## 3 3 Max Verstappen 214 R01 0
## 4 4 Sergio Perez 125 R01 8
## 5 5 Daniel Ricciardo 119 R01 0
## 6 6 Carlos Sainz 105 R01 10
## 7 7 Alexander Albon 105 R01 0
## 8 8 Charles Leclerc 98 R01 18
## 9 9 Lando Norris 97 R01 16
## 10 1 Lewis Hamilton 347 R02 25
## # … with 143 more rows
# Ahora añadimos algunas graficas ------------------------------------------------------
# '9 pilotos'
ggplot(f1long, aes(x = Carrera, y = Puntos, group = Piloto, colour = Piloto)) +
geom_line() +
scale_x_discrete(breaks=c('R01', 'R04', 'R08', 'R12', 'R17')) +
labs(title = 'Resultados Fórmula 1 2020, 9 mejores pilotos',
caption = 'fuente: www.formel1.de')
# Grafica para cada piloto
ggplot(f1long, aes(x = Carrera, y = Puntos, group = Piloto, colour = Piloto)) +
geom_line(show.legend = FALSE) + facet_wrap(~ Piloto) +
scale_x_discrete(breaks=c('R01', 'R04', 'R08', 'R12', 'R17')) +
labs(title = 'Resultados Fórmula 1 2020, 9 mejores pilotos',
caption = 'fuente: www.formel1.de')
# Importamos los resultados del campeonato de constructores 2020 ----------------
# Tomamos nuestra información de la siguiente pagina web
browseURL('https://www.formel1.de/rennergebnisse/wm-stand/2020/konstrukteurswertung')
# Fijamos los contenidos de la tabla HTML dentro de la variable f2
f2 <- read_html('https://www.formel1.de/rennergebnisse/wm-stand/2020/konstrukteurswertung') %>%
html_node('table') %>%
html_table()
# Display our data
f2
## Pos. Team Pkt.
## 1 1 Mercedes-Benz 573 37 43 41 25 34 41 43 17 44 41 25 44 44 25 29 7 33
## 2 2 Red Bull Racing 319 - 27 28 23 35 22 23 - 15 19 19 15 - 14 34 8 37
## 3 3 McLaren 202 26 13 2 10 2 9 6 30 8 - 10 8 10 15 22 13 18
## 4 4 Racing Point 195 8 14 18 2 14 22 3 16 10 12 16 6 8 20 - 40 1
## 5 5 Renault 181 4 4 4 20 4 - 23 12 12 16 15 6 15 1 8 28 9
## 6 6 Ferrari 131 19 - 8 16 12 6 - - 5 8 6 13 10 27 1 - -
## 7 7 AlphaTauri 107 6 1 - 6 1 2 4 27 6 6 8 10 12 - 8 6 4
## 8 8 Alfa Romeo 8 2 - - - - - - - 2 - 1 - 3 - - - -
## 9 9 Haas 3 - - 1 - - - - - - - 2 - - - - - -
## 10 10 Williams - - - - - - - - - - - - - - - - - -
# Transformamos y limpiamos la informacion de las escuderias -----------------------------------------------
# Añadimos los titulos de las columnas restantes
colnames(f2) <- c('Pos', 'Escuderia', 'Total', sprintf('R%02d', 1:17))
# Convertimos a un "tibble data frame" y filtramos a las 9 mejores escuderias
f1 <- as_tibble(f2) %>%
filter(as.integer(Pos) <= 9)
# Convertimos a Escuderia en una variable factorial, reemplazamos todos los '-' con ceros, convertimos a formato largo
f2$Escuderia <- as.factor(f2$Escuderia)
f2[, -2] <- apply(f2[, -2], 2, function(x) as.integer(gsub('-', '0', as.character(x))))
f2long <- gather(f2, Carrera, Puntos, R01:R17)
# Y así se ve mejor
f2long
## Pos Escuderia Total Carrera Puntos
## 1 1 Mercedes-Benz 573 R01 37
## 2 2 Red Bull Racing 319 R01 0
## 3 3 McLaren 202 R01 26
## 4 4 Racing Point 195 R01 8
## 5 5 Renault 181 R01 4
## 6 6 Ferrari 131 R01 19
## 7 7 AlphaTauri 107 R01 6
## 8 8 Alfa Romeo 8 R01 2
## 9 9 Haas 3 R01 0
## 10 10 Williams 0 R01 0
## 11 1 Mercedes-Benz 573 R02 43
## 12 2 Red Bull Racing 319 R02 27
## 13 3 McLaren 202 R02 13
## 14 4 Racing Point 195 R02 14
## 15 5 Renault 181 R02 4
## 16 6 Ferrari 131 R02 0
## 17 7 AlphaTauri 107 R02 1
## 18 8 Alfa Romeo 8 R02 0
## 19 9 Haas 3 R02 0
## 20 10 Williams 0 R02 0
## 21 1 Mercedes-Benz 573 R03 41
## 22 2 Red Bull Racing 319 R03 28
## 23 3 McLaren 202 R03 2
## 24 4 Racing Point 195 R03 18
## 25 5 Renault 181 R03 4
## 26 6 Ferrari 131 R03 8
## 27 7 AlphaTauri 107 R03 0
## 28 8 Alfa Romeo 8 R03 0
## 29 9 Haas 3 R03 1
## 30 10 Williams 0 R03 0
## 31 1 Mercedes-Benz 573 R04 25
## 32 2 Red Bull Racing 319 R04 23
## 33 3 McLaren 202 R04 10
## 34 4 Racing Point 195 R04 2
## 35 5 Renault 181 R04 20
## 36 6 Ferrari 131 R04 16
## 37 7 AlphaTauri 107 R04 6
## 38 8 Alfa Romeo 8 R04 0
## 39 9 Haas 3 R04 0
## 40 10 Williams 0 R04 0
## 41 1 Mercedes-Benz 573 R05 34
## 42 2 Red Bull Racing 319 R05 35
## 43 3 McLaren 202 R05 2
## 44 4 Racing Point 195 R05 14
## 45 5 Renault 181 R05 4
## 46 6 Ferrari 131 R05 12
## 47 7 AlphaTauri 107 R05 1
## 48 8 Alfa Romeo 8 R05 0
## 49 9 Haas 3 R05 0
## 50 10 Williams 0 R05 0
## 51 1 Mercedes-Benz 573 R06 41
## 52 2 Red Bull Racing 319 R06 22
## 53 3 McLaren 202 R06 9
## 54 4 Racing Point 195 R06 22
## 55 5 Renault 181 R06 0
## 56 6 Ferrari 131 R06 6
## 57 7 AlphaTauri 107 R06 2
## 58 8 Alfa Romeo 8 R06 0
## 59 9 Haas 3 R06 0
## 60 10 Williams 0 R06 0
## 61 1 Mercedes-Benz 573 R07 43
## 62 2 Red Bull Racing 319 R07 23
## 63 3 McLaren 202 R07 6
## 64 4 Racing Point 195 R07 3
## 65 5 Renault 181 R07 23
## 66 6 Ferrari 131 R07 0
## 67 7 AlphaTauri 107 R07 4
## 68 8 Alfa Romeo 8 R07 0
## 69 9 Haas 3 R07 0
## 70 10 Williams 0 R07 0
## 71 1 Mercedes-Benz 573 R08 17
## 72 2 Red Bull Racing 319 R08 0
## 73 3 McLaren 202 R08 30
## 74 4 Racing Point 195 R08 16
## 75 5 Renault 181 R08 12
## 76 6 Ferrari 131 R08 0
## 77 7 AlphaTauri 107 R08 27
## 78 8 Alfa Romeo 8 R08 0
## 79 9 Haas 3 R08 0
## 80 10 Williams 0 R08 0
## 81 1 Mercedes-Benz 573 R09 44
## 82 2 Red Bull Racing 319 R09 15
## 83 3 McLaren 202 R09 8
## 84 4 Racing Point 195 R09 10
## 85 5 Renault 181 R09 12
## 86 6 Ferrari 131 R09 5
## 87 7 AlphaTauri 107 R09 6
## 88 8 Alfa Romeo 8 R09 2
## 89 9 Haas 3 R09 0
## 90 10 Williams 0 R09 0
## 91 1 Mercedes-Benz 573 R10 41
## 92 2 Red Bull Racing 319 R10 19
## 93 3 McLaren 202 R10 0
## 94 4 Racing Point 195 R10 12
## 95 5 Renault 181 R10 16
## 96 6 Ferrari 131 R10 8
## 97 7 AlphaTauri 107 R10 6
## 98 8 Alfa Romeo 8 R10 0
## 99 9 Haas 3 R10 0
## 100 10 Williams 0 R10 0
## 101 1 Mercedes-Benz 573 R11 25
## 102 2 Red Bull Racing 319 R11 19
## 103 3 McLaren 202 R11 10
## 104 4 Racing Point 195 R11 16
## 105 5 Renault 181 R11 15
## 106 6 Ferrari 131 R11 6
## 107 7 AlphaTauri 107 R11 8
## 108 8 Alfa Romeo 8 R11 1
## 109 9 Haas 3 R11 2
## 110 10 Williams 0 R11 0
## 111 1 Mercedes-Benz 573 R12 44
## 112 2 Red Bull Racing 319 R12 15
## 113 3 McLaren 202 R12 8
## 114 4 Racing Point 195 R12 6
## 115 5 Renault 181 R12 6
## 116 6 Ferrari 131 R12 13
## 117 7 AlphaTauri 107 R12 10
## 118 8 Alfa Romeo 8 R12 0
## 119 9 Haas 3 R12 0
## 120 10 Williams 0 R12 0
## 121 1 Mercedes-Benz 573 R13 44
## 122 2 Red Bull Racing 319 R13 0
## 123 3 McLaren 202 R13 10
## 124 4 Racing Point 195 R13 8
## 125 5 Renault 181 R13 15
## 126 6 Ferrari 131 R13 10
## 127 7 AlphaTauri 107 R13 12
## 128 8 Alfa Romeo 8 R13 3
## 129 9 Haas 3 R13 0
## 130 10 Williams 0 R13 0
## 131 1 Mercedes-Benz 573 R14 25
## 132 2 Red Bull Racing 319 R14 14
## 133 3 McLaren 202 R14 15
## 134 4 Racing Point 195 R14 20
## 135 5 Renault 181 R14 1
## 136 6 Ferrari 131 R14 27
## 137 7 AlphaTauri 107 R14 0
## 138 8 Alfa Romeo 8 R14 0
## 139 9 Haas 3 R14 0
## 140 10 Williams 0 R14 0
## 141 1 Mercedes-Benz 573 R15 29
## 142 2 Red Bull Racing 319 R15 34
## 143 3 McLaren 202 R15 22
## 144 4 Racing Point 195 R15 0
## 145 5 Renault 181 R15 8
## 146 6 Ferrari 131 R15 1
## 147 7 AlphaTauri 107 R15 8
## 148 8 Alfa Romeo 8 R15 0
## 149 9 Haas 3 R15 0
## 150 10 Williams 0 R15 0
## 151 1 Mercedes-Benz 573 R16 7
## 152 2 Red Bull Racing 319 R16 8
## 153 3 McLaren 202 R16 13
## 154 4 Racing Point 195 R16 40
## 155 5 Renault 181 R16 28
## 156 6 Ferrari 131 R16 0
## 157 7 AlphaTauri 107 R16 6
## 158 8 Alfa Romeo 8 R16 0
## 159 9 Haas 3 R16 0
## 160 10 Williams 0 R16 0
## 161 1 Mercedes-Benz 573 R17 33
## 162 2 Red Bull Racing 319 R17 37
## 163 3 McLaren 202 R17 18
## 164 4 Racing Point 195 R17 1
## 165 5 Renault 181 R17 9
## 166 6 Ferrari 131 R17 0
## 167 7 AlphaTauri 107 R17 4
## 168 8 Alfa Romeo 8 R17 0
## 169 9 Haas 3 R17 0
## 170 10 Williams 0 R17 0
# Ahora añadimos su grafica respectiva ------------------------------------------------------
# 'TOP 10'
ggplot(f2long, aes(x = Carrera, y = Puntos, group = Escuderia, colour = Escuderia)) +
geom_line() +
scale_x_discrete(breaks=c('R01', 'R04', 'R08', 'R12', 'R17')) +
labs(title = 'Resultados Fórmula 1 2020, Ranking mejores escuderias',
caption = 'fuente: www.formel1.de')
ggplot(f2long, aes(x = Carrera, y = Puntos, group = Escuderia, colour = Escuderia)) +
geom_line(show.legend = FALSE) + facet_wrap(~ Escuderia) +
scale_x_discrete(breaks=c('R01', 'R04', 'R08', 'R12', 'R17')) +
labs(title = 'Resultados Fórmula 1 2020, Ranking escuderías',
caption = 'fuente: www.formel1.de')
# IX.A continuación formaremos un vector con cada una de las ubicaciones en donde se desarrollaron las 17 carreras.
Austria<-c(47.2197222,14.7647222)
Hungría<-c(47.5822222,19.2511111)
Inglaterra<-c(52.0786111,-1.0169444)
España<-c(41.5700000,2.2611111)
Bélgica<-c(50.4372222,5.9713888)
ItaliaM<-c(45.6205555,9.2894444)
ItaliaT<-c(43.9975,11.37194)
Rusia<-c(43.40833,39.96556)
Alemania<-c(50.3355555,6.9475)
Portugal<-c(37.2294,-8.63053)
ItaliaER<-c(44.3411111,11.7133333)
Turquía<-c(40.9516666,29.405)
Barein<-c(26.0325,50.5105555)
EAU<-c(24.4702444,54.606075)
sedes<-rbind(Austria,Hungría,Inglaterra,España,Bélgica,ItaliaM,ItaliaT,Rusia,Alemania,Portugal,ItaliaER,Turquía,Barein,EAU)
sedes
## [,1] [,2]
## Austria 47.21972 14.764722
## Hungría 47.58222 19.251111
## Inglaterra 52.07861 -1.016944
## España 41.57000 2.261111
## Bélgica 50.43722 5.971389
## ItaliaM 45.62056 9.289444
## ItaliaT 43.99750 11.371940
## Rusia 43.40833 39.965560
## Alemania 50.33556 6.947500
## Portugal 37.22940 -8.630530
## ItaliaER 44.34111 11.713333
## Turquía 40.95167 29.405000
## Barein 26.03250 50.510556
## EAU 24.47024 54.606075
colnames(sedes)<-c("Longitud","Latitud")
sedes
## Longitud Latitud
## Austria 47.21972 14.764722
## Hungría 47.58222 19.251111
## Inglaterra 52.07861 -1.016944
## España 41.57000 2.261111
## Bélgica 50.43722 5.971389
## ItaliaM 45.62056 9.289444
## ItaliaT 43.99750 11.371940
## Rusia 43.40833 39.965560
## Alemania 50.33556 6.947500
## Portugal 37.22940 -8.630530
## ItaliaER 44.34111 11.713333
## Turquía 40.95167 29.405000
## Barein 26.03250 50.510556
## EAU 24.47024 54.606075
sedes<-data.frame(sedes)
sedes
## Longitud Latitud
## Austria 47.21972 14.764722
## Hungría 47.58222 19.251111
## Inglaterra 52.07861 -1.016944
## España 41.57000 2.261111
## Bélgica 50.43722 5.971389
## ItaliaM 45.62056 9.289444
## ItaliaT 43.99750 11.371940
## Rusia 43.40833 39.965560
## Alemania 50.33556 6.947500
## Portugal 37.22940 -8.630530
## ItaliaER 44.34111 11.713333
## Turquía 40.95167 29.405000
## Barein 26.03250 50.510556
## EAU 24.47024 54.606075
qmplot(Latitud, Longitud, data=sedes, color=I(rainbow(14)))
## Using zoom = 4...
## Source : http://tile.stamen.com/terrain/4/7/5.png
## Source : http://tile.stamen.com/terrain/4/8/5.png
## Source : http://tile.stamen.com/terrain/4/9/5.png
## Source : http://tile.stamen.com/terrain/4/10/5.png
## Source : http://tile.stamen.com/terrain/4/7/6.png
## Source : http://tile.stamen.com/terrain/4/8/6.png
## Source : http://tile.stamen.com/terrain/4/9/6.png
## Source : http://tile.stamen.com/terrain/4/10/6.png
Ubicaciones de los GP de la temporada 2020 de la Fórmula 1.
#En este espacio aprenderemos a hacer mapas con R utilizando como ejemplo un caso hipotetico. Para asi poder observar una de las muchas utilidades que puede tener esta herramienta. #Supongamos que te encargas de dirigir una investigacion que busca encontrar lo nexos de cierto jefe criminal, para eso cuentas con los datos que te proporciona el gps de los ultimos 30 días de su telefono.
# X. Activar las librerias
library(ggplot2) #Esta librería nos permitira hacer graficas alta calidad
library(ggmap) #Esta librería nos permitirá hacer mapas utilizando fuentes como google
library(plotly) #esta librería nos permitira hacer graficas interactivas
##
## Attaching package: 'plotly'
## The following object is masked from 'package:ggmap':
##
## wind
## The following object is masked from 'package:ggplot2':
##
## last_plot
## The following object is masked from 'package:stats':
##
## filter
## The following object is masked from 'package:graphics':
##
## layout
Día<-1:30
LONGITUD<-sample(seq(-99.18648,-99.1,0.01), 30,T)
LATITUD<-sample(seq(19.33329,19.4,0.01), 30, T)
gps<-data.frame(Día,LONGITUD,LATITUD)
gps
## Día LONGITUD LATITUD
## 1 1 -99.14648 19.35329
## 2 2 -99.14648 19.37329
## 3 3 -99.17648 19.37329
## 4 4 -99.17648 19.37329
## 5 5 -99.12648 19.35329
## 6 6 -99.12648 19.34329
## 7 7 -99.11648 19.35329
## 8 8 -99.14648 19.33329
## 9 9 -99.14648 19.39329
## 10 10 -99.13648 19.36329
## 11 11 -99.14648 19.33329
## 12 12 -99.14648 19.36329
## 13 13 -99.15648 19.35329
## 14 14 -99.12648 19.33329
## 15 15 -99.15648 19.33329
## 16 16 -99.12648 19.33329
## 17 17 -99.17648 19.36329
## 18 18 -99.17648 19.38329
## 19 19 -99.11648 19.38329
## 20 20 -99.13648 19.38329
## 21 21 -99.17648 19.33329
## 22 22 -99.12648 19.33329
## 23 23 -99.16648 19.33329
## 24 24 -99.14648 19.34329
## 25 25 -99.18648 19.37329
## 26 26 -99.10648 19.37329
## 27 27 -99.10648 19.35329
## 28 28 -99.18648 19.36329
## 29 29 -99.10648 19.37329
## 30 30 -99.13648 19.33329
ruta_del_criminal<-ggplot(gps)+geom_point(aes(x=LONGITUD,y=LATITUD),color=Día)
ruta_del_criminal
ruta_del_criminal_con_dias<-ggplot(gps)+geom_text(aes(LONGITUD,LATITUD,label = Día))
ruta_del_criminal_con_dias
ggplotly(ruta_del_criminal_con_dias)
qmplot(LONGITUD,LATITUD, data = gps)
## Using zoom = 13...
## Source : http://tile.stamen.com/terrain/13/1838/3645.png
## Source : http://tile.stamen.com/terrain/13/1839/3645.png
## Source : http://tile.stamen.com/terrain/13/1840/3645.png
## Source : http://tile.stamen.com/terrain/13/1838/3646.png
## Source : http://tile.stamen.com/terrain/13/1839/3646.png
## Source : http://tile.stamen.com/terrain/13/1840/3646.png
## Source : http://tile.stamen.com/terrain/13/1838/3647.png
## Source : http://tile.stamen.com/terrain/13/1839/3647.png
## Source : http://tile.stamen.com/terrain/13/1840/3647.png
qmplot(LONGITUD,LATITUD,data = gps,color = Día, size = I(2))
## Using zoom = 13...
qmplot(LONGITUD,LATITUD,data = gps,geom = c("point","density2d"))
## Using zoom = 13...